Sanejament

Column

Percentatge de població amb accés a Sanejament bàsic

Column

% de població assistida per sistemes de tractament gestionats amb seguretat

Chart B

---
title: "Estat del Sanejament de les aigües residuals | WHO-UNICEF"
author: "Carles Cayuela Linares"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    theme:
      version: 4
      bg: "#3e3e3e"
      fg: "#FDF7F7" 
      primary: "#101010"
      navbar-bg: "#000000"
    source_code: embed
---

```{r setup, include=FALSE}
library(flexdashboard)
library(openxlsx)
library(crosstalk)
library(ggplot2)
library(dplyr)
library(plotly)
library(rgdal)
library(sf)
library(leaflet)
library(sp)
library(stringr)
library(DT)
library(tidyverse)
library(data.table)

# DADES:
dades <- read.xlsx("dades.xlsx", sheet = "Sanitation", startRow = 3)

dades_subset_sanejament <- dades %>%
  filter(Year == "2020") %>%
  select(COUNTRY, ISO3, Year, `%.urban`, `Population.(thousands)`, `At.least.basic._NATIONAL`, `Limited.(shared)_NATIONAL`, `Unimproved_NATIONAL`, `Open.defecation_NATIONAL`, `Annual.rate.of.change.in.basic_NATIONAL`, `Annual.rate.of.change.in.open.defecation_NATIONAL`,
`Safely.managed_NATIONAL`, `Disposed.in.situ_NATIONAL`, `Emptied.and.treated_NATIONAL`,                      `Wastewater.treated_NATIONAL`, `Latrines.and.other_NATIONAL`, `Septic.tanks_NATIONAL`, `Sewer.connections_NATIONAL`) %>%
  
  mutate_all(funs(str_replace(., "&gt;99", "99.9"))) %>%
  mutate_all(funs(str_replace(., "&lt;1", "0.01"))) %>%
  mutate(across(`%.urban`:`Sewer.connections_NATIONAL`, as.numeric)) %>%
  mutate(across(`%.urban`:`Sewer.connections_NATIONAL`, round, 2)) %>%
  mutate(`Safely.managed_NATIONAL` = replace_na(`Safely.managed_NATIONAL`, 0)) %>% 
  setNames(., c("Pais", "iso3", "Any", "Percent_urba", "Poblacio_milers", "Sanejament_basic", "Sanejament_limitat", "SanejamentNoMillorat", "Sense_Sanejament", "Rati_canvi_sanejament_basic",  "Rati_canvi_Sense_Sanejament",
                "Gestionada_correctament", "Abocada sense tractat", "Abocada i Tractada", "Tractada", "Latrines", "Fosses Sèptiques", "Recollida en col·lectors"))


dades_subset_sanejament_2 <- dades %>%
  select(COUNTRY, ISO3, Year, `%.urban`, `Population.(thousands)`, `At.least.basic._NATIONAL`, `Limited.(shared)_NATIONAL`, `Unimproved_NATIONAL`, `Open.defecation_NATIONAL`, `Annual.rate.of.change.in.basic_NATIONAL`, `Annual.rate.of.change.in.open.defecation_NATIONAL`) %>%
  mutate_all(funs(str_replace(., "&gt;99", "99.9"))) %>%
  mutate_all(funs(str_replace(., "&lt;1", "0.01"))) %>%
  mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, as.numeric)) %>%
  mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, round, 2)) %>%
  mutate(Year = as.numeric(Year)) %>%
  # mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, replace_na, 0)) %>%
  setNames(., c("Pais", "iso3", "Any", "Percent_urba", "Poblacio_milers", "Sanejament_basic", "Sanejament_limitat", "SanejamentNoMillorat", "Sense_Sanejament", "Rati_canvi_sanejament_basic",  "Rati_canvi_Sense_Sanejament"))


# MAPA:
world_polygons <- read_sf("world-administrative-boundaries/world-administrative-boundaries.shp")
world_polygons <- st_simplify(world_polygons)

dades_map <- merge(world_polygons, dades_subset_sanejament, by = "iso3")

# SHARED DATA:
sd <- SharedData$new(dades_map)

# PALETTA DEL MAPA:
pal <- colorNumeric(palette = "RdYlGn", domain = seq(0,100,1) )

# SUNBURST

DF_sunburst <- data.table(continent=dades_map$continent, pais=dades_map$Pais, valor=dades_map$Gestionada_correctament)

as.sunburstDF <- function(DF, value_column = NULL, add_root = FALSE){
  require(data.table)
  
  colNamesDF <- names(DF)
  
  if(is.data.table(DF)){
    DT <- copy(DF)
  } else {
    DT <- data.table(DF, stringsAsFactors = FALSE)
  }
  
  if(add_root){
    DT[, root := ""]  
  }
  
  colNamesDT <- names(DT)
  hierarchy_columns <- setdiff(colNamesDT, value_column)
  DT[, (hierarchy_columns) := lapply(.SD, as.factor), .SDcols = hierarchy_columns]
  
  if(is.null(value_column) && add_root){
    setcolorder(DT, c("root", colNamesDF))
  } else if(!is.null(value_column) && !add_root) {
    setnames(DT, value_column, "values", skip_absent=TRUE)
    setcolorder(DT, c(setdiff(colNamesDF, value_column), "values"))
  } else if(!is.null(value_column) && add_root) {
    setnames(DT, value_column, "values", skip_absent=TRUE)
    setcolorder(DT, c("root", setdiff(colNamesDF, value_column), "values"))
  }
  
  hierarchyList <- list()
  
  for(i in seq_along(hierarchy_columns)){
    current_columns <- colNamesDT[1:i]
    if(is.null(value_column)){
      currentDT <- unique(DT[, ..current_columns][, values := .N, by = current_columns], by = current_columns)
    } else {
      currentDT <- DT[, lapply(.SD, mean, na.rm = TRUE), by=current_columns, .SDcols = "values"]
    }
    setnames(currentDT, length(current_columns), "labels")
    hierarchyList[[i]] <- currentDT
  }
  
  hierarchyDT <- rbindlist(hierarchyList, use.names = TRUE, fill = TRUE)
  
  parent_columns <- setdiff(names(hierarchyDT), c("labels", "values", value_column))
  hierarchyDT[, parents := apply(.SD, 1, function(x){fifelse(all(is.na(x)), yes = NA_character_, no = paste(x[!is.na(x)], sep = ":", collapse = " - "))}), .SDcols = parent_columns]
  hierarchyDT[, ids := apply(.SD, 1, function(x){paste(x[!is.na(x)], collapse = " - ")}), .SDcols = c("parents", "labels")]
  hierarchyDT[, c(parent_columns) := NULL]
  return(hierarchyDT)
}

```

Sanejament
=======================================================================

Inputs {.sidebar}
-----------------------------------------------------------------------

Segons dades de l'Organització Mundial de la Slaut, **el sanejament de les aigües residuals** deficient és la causa principal d'unes 432.000 morts anuals i és un factor important en diverses malalties, com ara cucs intestinals, esquistosomiasi i tracoma. Un sanejament deficient també contribueix a la desnutrició.

El **2020**, el 78% de la població mundial (6.100 milions de persones) va utilitzar almenys un servei de sanejament bàsic; el 22% restant no va tenir accés al sanejament bàsic.

**A continuació es pot consultar per país l'estat del sanejament de les aigües residuals:**


```{r filters}
#FILTRE:
filter_select(
  id = "id_Pais",
  label = "Llistat de Països",
  sharedData = sd,
  group = ~Pais,
  multiple = T
)

```



Column {data-width=600}
-------------------------------------

### Percentatge de població amb accés a Sanejament bàsic
    
```{r}

leaflet(sd) %>%
  
  setView(lng = 0, lat = 10, zoom = 2) %>%

  addProviderTiles(providers$CartoDB.DarkMatter) %>%
  
  
  addPolygons(fillColor = ~pal(Sanejament_basic), fillOpacity = 0.75, color="grey", weight = 1, 
              popup = ~paste(
                "<a style='color:#000000'> País: </a>", "<b style='color:#000000'>", Pais, "</b><br>",
                "<a style='color:#000000'> Població sanejada: </a>", "<b style='color:#000000'>", Sanejament_basic, "%", "</b><br>"))
  

```


Column {data-width=400}
-------------------------------------


### % de població assistida per sistemes de tractament gestionats amb seguretat


```{r}

sunburstDF <- as.sunburstDF(DF_sunburst, value_column = "valor", add_root = TRUE)

plot_ly(data = sunburstDF, ids = ~ids, labels= ~labels, parents = ~parents, values= ~values, type='sunburst', branchvalues = 'relative') %>%
  layout(
         plot_bgcolor = "rgba(0,0,0,0)",
         paper_bgcolor = "rgba(0,0,0,0)")


```






### Chart B